import org.apache.commons.lang3.StringUtils;
import utils.ExtractZip;
import utils.FileUtils;
import utils.HtmlUtils;
import utils.XmlUtils;

import java.io.File;
import java.util.Scanner;

/**
 * @author Zhang Guangyong
 * @desacription 解析xml
 * @date 2019年07月19日 18:18
 */
public class ChangeXml {

    /**
     * 批量解析 epub 电子书方法
     *
     * @param filePath : 文件夹路径
     * @param titleStr : 重命名标题
     * @param space    : 是否加空格
     * @param flag    : 简繁转换标识 null 不处理 s/t 简繁
     * @author 张广勇
     * @date 2019/7/22 15:42
     */
    public static void changeXml(String filePath, String titleStr, boolean space, String flag) {
        File fileDir = new File(filePath);
        File[] files = fileDir.listFiles();
        if (files != null) {
            int num = 1;
            for (int i = 0; i < files.length; i++) {
                File file = files[i];
                String fileName = file.getName();
                //1.解压文件
                String path = file.getPath();
                try {
                    ExtractZip.unZip(path, filePath + "\\temp");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                //2.处理title
                String title = "";
                if (space) {
                    if (num < 10) {
                        title = titleStr + " 0" + num;
                    } else if (num < 100) {
                        title = titleStr + " " + num;
                    }
                } else {
                    if (num < 10) {
                        title = titleStr + "0" + num;
                    } else if (num < 100) {
                        title = titleStr + num;
                    }
                }

                XmlUtils.setXmlTitle(filePath + "\\temp\\OEBPS\\content.opf",
                        filePath + "\\temp\\OEBPS\\content.opf",
                        title);

                //2.5 可选 简繁转换
                if (StringUtils.isNotEmpty(flag)) {
                    if (!"0".equals(flag)) {
                        File textFileDir = new File(filePath + "\\temp\\OEBPS\\Text");
                        File[] textList = textFileDir.listFiles();
                        if (textList != null) {
                            for (File text : textList) {
                                System.out.println("简繁处理文件: " + text.getPath());
                                HtmlUtils.changeSimpleOrTraditional(text.getPath(), text.getPath(), flag);
                            }
                        }
                    }
                }

                //3.删除原文件
                boolean delete = file.delete();
                //4.压缩文件
                ExtractZip.compress(filePath + "\\temp\\", filePath + "\\" + fileName);
                //5.删除缓存目录
                FileUtils.deleteDirectory(filePath + "\\temp");
                num++;
            }
        }


    }


    public static void main(String[] args) {

        //配置参数
        String filePath = "I:\\轻文学\\[《处理区》]\\testEpub";     //处理目录
        String titleStr = "我和她的青春辩论";                                   //重命名标题
        String flag;

        while (true) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入处理目录:");
            filePath = sc.nextLine();
            System.out.println("请输入重命名标题:");
            titleStr = sc.nextLine();
            System.out.println("请输入简繁转换标识:(0:不处理 1:繁转简 2:简转繁)");
            flag = sc.nextLine();
            System.out.println("处理中......");

            changeXml(filePath, titleStr, true, flag);

            System.out.println("处理完成");
        }


    }


}



